use release profile for examples build with --release flag
authorrndr <you@example.com>
Sun, 11 Jan 2015 02:47:24 +0000 (07:47 +0500)
committerrndr <you@example.com>
Sun, 11 Jan 2015 02:47:24 +0000 (07:47 +0500)
src/bin/run.rs
src/cargo/core/manifest.rs
src/cargo/util/toml.rs
tests/test_cargo_bench.rs

index 7125b68ea9810aa8f66d00b965ca6c66164c5fd9..5124504f1e2867dcf30e12af59a03ee4d596e80a 100644 (file)
@@ -51,8 +51,7 @@ pub fn execute(options: Options, shell: &mut MultiShell) -> CliResult<Option<()>
     let root = try!(find_root_manifest_for_cwd(options.flag_manifest_path));
 
     let env = match (options.flag_release, options.flag_example.is_some()) {
-        (true, true) => "bench",
-        (true, false) => "release",
+        (true, _) => "release",
         (false, true) => "test",
         (false, false) => "compile"
     };
index 76b711488e38a129d2033d7f42796e9ed277a3d1..a8e3d4370d6236d2b8967a044175b19349078af4 100644 (file)
@@ -196,13 +196,6 @@ impl Profile {
         }
     }
 
-    pub fn default_example_release() -> Profile {
-        Profile {
-            test: false,
-            .. Profile::default_bench()
-        }
-    }
-
     pub fn default_release() -> Profile {
         Profile {
             env: "release".to_string(),
index 0d32490fd06902ac91d84efddb38207c4b40d609..71601bfc4c153a0c9f3b2bad1f13949ae44ddfc8 100644 (file)
@@ -818,7 +818,7 @@ fn normalize(libs: &[TomlLibTarget],
             let path = ex.path.clone().unwrap_or_else(|| PathValue::String(default(ex)));
 
             let profile = merge(Profile::default_example(), &profiles.test);
-            let profile_release = merge(Profile::default_example_release(), &profiles.release);
+            let profile_release = merge(Profile::default_release(), &profiles.release);
             dst.push(Target::example_target(ex.name.as_slice(),
                                             &path.to_path(),
                                             &profile));
index 3f9ae908f05289cb6241656af2041af32c7ee1ab..593d01a1836311b59fdb92caf9aff9c2acb3b111 100644 (file)
@@ -785,3 +785,82 @@ test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
 ",
                        running = RUNNING)));
 });
+
+test!(bench_with_examples {
+    let p = project("testbench")
+        .file("Cargo.toml", r#"
+            [package]
+            name = "testbench"
+            version = "6.6.6"
+            authors = []
+
+            [[example]]
+            name = "teste1"
+
+            [[bench]]
+            name = "testb1"
+        "#)
+        .file("src/lib.rs", r#"
+            extern crate test;
+            use test::Bencher;
+
+            pub fn f1() {
+                println!("f1");
+            }
+
+            pub fn f2() {}
+
+            #[bench]
+            fn bench_bench1(_b: &mut Bencher) {
+                f2();
+            }
+        "#)
+        .file("benches/testb1.rs", "
+            extern crate testbench;
+            extern crate test;
+
+            use test::Bencher;
+
+            #[bench]
+            fn bench_bench2(_b: &mut Bencher) {
+                testbench::f2();
+            }
+        ")
+        .file("examples/teste1.rs", r#"
+            extern crate testbench;
+
+            fn main() {
+                println!("example1");
+                testbench::f1();
+            }
+        "#);
+
+    assert_that(p.cargo_process("bench").arg("-v"),
+                execs().with_status(0)
+                       .with_stdout(format!("\
+{compiling} testbench v6.6.6 ({url})
+{running} `rustc {dir}{sep}src{sep}lib.rs --crate-name testbench --crate-type lib [..]`
+{running} `rustc {dir}{sep}src{sep}lib.rs --crate-name testbench --crate-type lib [..]`
+{running} `rustc benches{sep}testb1.rs --crate-name testb1 --crate-type bin \
+        [..] --test [..]`
+{running} `{dir}{sep}target{sep}release{sep}testb1-[..] --bench`
+
+running 1 test
+test bench_bench2 ... bench:         0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+{running} `{dir}{sep}target{sep}release{sep}testbench-[..] --bench`
+
+running 1 test
+test bench_bench1 ... bench:         0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+",
+                       compiling = COMPILING,
+                       running = RUNNING,
+                       dir = p.root().display(),
+                       url = p.url(),
+                       sep = path::SEP).as_slice()));
+});